//
// Created by pzw on 24-3-24.
//

#ifndef QTTEST_PSEUDOCONT_H
#define QTTEST_PSEUDOCONT_H

#include <array>
#include <vector>
#include <algorithm>
#include <iostream>
#include <bitset>
#include <random>
#include <utility>
#include <tuple>
#include <exception>

class PseudoCont {
public:/* array */
    template<typename T, size_t N>
    static std::array<T, N> std_array();

public:/* bitset */
    template<size_t N>
    static std::bitset<N> std_bitset();
    template<size_t N>
    static void std_bitset_reinit(std::bitset<N> &bitset);
public:/* vector<bool> */
    template<size_t N>
    static std::vector<bool> std_vector_bool();
public:/* 元组 */
    template<typename T, typename U>
    static std::pair<T, U> std_pair();
    template<typename T, typename U>
    static std::pair<T, U> std_make_pair(T first, U second);
    template<typename ...Tps>
    static std::tuple<Tps...> std_tuple();
    template<typename ...Tps>
    static std::tuple<Tps...> std_make_tuple(Tps ...tps);
public:
    static int randomInt(int start, int end) {
        // 创建随机数生成器
        std::random_device rd;  // 非确定性随机数生成器
        std::mt19937 gen(rd()); // 以随机设备作为种子的Mersenne Twister生成器
        // 创建均匀分布，范围从0到1
        std::uniform_int_distribution<> distrib(start, end);
        // 生成随机数
        int random_number = distrib(gen);
#if 0
        // 打印随机数
        std::cout << "Random number (0 or 1): " << random_number << std::endl;
#endif
        return random_number;
    }

};


int PseudoCont_main();

#endif //QTTEST_PSEUDOCONT_H
